home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
libs
/
intuisup.lha
/
Intuisup
/
source.lha
/
Editor
/
main.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-10-05
|
6KB
|
220 lines
/* $Revision Header *** Header built automatically - do not edit! ***********
*
* (C) Copyright 1991 by Torsten Jürgeleit
*
* Name .....: main.c
* Created ..: Sunday 22-Dec-91 21:22:47
* Revision .: 2
*
* Date Author Comment
* ========= ==================== ====================
* 02-Oct-92 Michael Bjerking New realese, better Screen/Window editor
* 02-Oct-92 Michael Bjerking Arp library replaced by ReqTools
* 22-Dec-91 Torsten Jürgeleit Created this file!
*
****************************************************************************
*
* Main part
*
* $Revision Header ********************************************************/
/* Includes */
#include "includes.h"
#include "defines.h"
#include "imports.h"
#include "protos.h"
/* Globals */
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct ArpBase *ArpBase;
struct Library *IntuiSupBase = NULL; /* Clear for show_error() */
struct ReqToolsBase *ReqToolsBase;
/*
struct Library *DiskfontBase;
struct Library *LayersBase;
*/
struct Screen wb_screen;
struct Window *ewin, *pwin;
struct TextAttr topaz60_attr =
{(STRPTR) "topaz.font", TOPAZ_SIXTY,
FS_NORMAL, FPF_ROMFONT}, topaz80_attr =
{
(STRPTR) "topaz.font", TOPAZ_EIGHTY,
FS_NORMAL, FPF_ROMFONT
};
STATIC struct NewWindow editor_new_window =
{
EDITOR_WINDOW_LEFT, EDITOR_WINDOW_TOP, EDITOR_WINDOW_WIDTH,
EDITOR_WINDOW_HEIGHT, EDITOR_WINDOW_DETAIL_PEN, EDITOR_WINDOW_BLOCK_PEN,
EDITOR_WINDOW_IDCMP, EDITOR_WINDOW_FLAGS, NULL, NULL,
(UBYTE *) & editor_window_title[0], NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
};
struct NewWindow project_new_window =
{
0, 0, 0, 0, PROJECT_WINDOW_DETAIL_PEN, PROJECT_WINDOW_BLOCK_PEN,
PROJECT_WINDOW_IDCMP, PROJECT_WINDOW_FLAGS, NULL, NULL,
PROJECT_WINDOW_TITLE, NULL, NULL, PROJECT_WINDOW_MIN_WIDTH,
PROJECT_WINDOW_MIN_HEIGHT, -1, -1, WBENCHSCREEN
};
struct TemplateList template_list;
struct Template *selected_template, *info_template;
struct Box current_box;
struct GadgetData *use_gd;
struct rtFileRequester *project_file_requester, *csource_file_requester;
struct Dimension min_dimension[MAX_TEMPLATE_TYPES] =
{
{20, 10},
{0, 0},
{20, 10},
{21, 11},
{50, 10},
{30, 8},
{30, 8},
{20, 8},
{20, 8},
{50, 10},
{40, 10},
{40, 30},
{60, 30}};
APTR eri, pri, egl, eml, use_gl;
BYTE *default_mx_text_array[]=
{"MX1", "MX2", NULL}, *default_cycle_text_array[]=
{"Cycle", "Test 1", "Test 2", NULL}, *default_listview_text_array[]=
{"Entry 1", "Entry 2", "Entry 3",
"Entry 4", "Entry 5", "Entry 6", "Entry 7", "Entry 8",
"Entry 9", "Entry 10", NULL};
BYTE editor_window_title[MAX_PROJECT_NAME_LEN + 3], editor_screen_title[MAX_PROJECT_NAME_LEN + 1], project_window_title[80];
USHORT snap_offset_table[]=
{1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
USHORT editor_mode = DEFAULT_EDITOR_MODE, snap_offset = DEFAULT_SNAP_OFFSET, template_type = DEFAULT_TEMPLATE_TYPE;
USHORT modify_mode = 0, mouse_button = 0;
SHORT last_snap_x, last_snap_y;
BOOL info_displayed = FALSE;
/* Main routine */
LONG
main(VOID)
{
LONG return_code = RETURN_ERROR;
MWInit((BPTR) NULL, (LONG) MWF_NOATRASH);
if (IntuitionBase = (struct IntuitionBase *) OpenLibrary("intuition.library", 0L))
{
if (GfxBase = (struct GfxBase *) OpenLibrary("graphics.library", 0L))
{
if (!(ReqToolsBase = (struct ReqToolsBase *) OpenLibrary(REQTOOLSNAME, REQTOOLSVERSION)))
show_error(EDITOR_ERROR_NO_REQTOOLS);
else
{
if (!(IntuiSupBase = (struct Library *) OpenLibrary(IntuiSupName, IntuiSupVersion)))
show_error(EDITOR_ERROR_NO_INTUISUP);
else
{
return_code = init_resources();
CloseLibrary(IntuiSupBase);
}
CloseLibrary((struct Library *) ReqToolsBase);
}
CloseLibrary((struct Library *) GfxBase);
}
CloseLibrary((struct Library *) IntuitionBase);
}
MWTerm();
return (return_code);
}
/* Init resources */
LONG
init_resources(VOID)
{
SHORT status;
LONG return_code = RETURN_OK;
GetScreenData((BYTE *) & wb_screen, (LONG) sizeof(struct Screen), (LONG)
WBENCHSCREEN, (struct Screen *) NULL);
/* Init and open editor window */
if (!(eri = IGetRenderInfo((struct Screen *) NULL,
EDIT_RENDER_INFO_FLAGS)))
{
status = EDITOR_ERROR_OUT_OF_MEM;
}
else
{
editor_new_window.LeftEdge = (wb_screen.Width -
editor_new_window.Width) / 2;
if (!(ewin = IOpenWindow(eri, &editor_new_window,
EDIT_OPEN_WINDOW_FLAGS)))
{
status = EDITOR_ERROR_NO_WINDOW;
}
else
{
/* Init Template IDCMP flag */
template_list.tl_IDCMPFlags = EDITOR_WINDOW_IDCMP;
/* Init and open project window */
pri = NULL;
pwin = NULL;
if ((status = new_project_window(&template_list,
TEMPLATE_LIST_FLAG_DEFAULT_WINDOW)) == EDITOR_STATUS_NORMAL)
{
/* Init ReqTools file requester structs */
if (!(project_file_requester = (struct rtFileRequester *)rtAllocRequestA(RT_FILEREQ, NULL)))
{
status = EDITOR_ERROR_OUT_OF_MEM;
}
else
{
if (!(csource_file_requester = (struct rtFileRequester *)rtAllocRequestA(RT_FILEREQ, NULL)))
{
status = EDITOR_ERROR_OUT_OF_MEM;
}
else
{
status = editor_action_loop();
}
}
}
rtFreeRequest((APTR)project_file_requester);
rtFreeRequest((APTR)csource_file_requester);
/* Free resources */
if (pwin)
{
ICloseWindow(pwin, FALSE);
}
if (pri)
{
IFreeRenderInfo(pri);
}
ICloseWindow(ewin, FALSE);
}
IFreeRenderInfo(eri);
}
if (status < EDITOR_STATUS_NORMAL)
{
show_error(status);
return_code = RETURN_ERROR;
}
return (return_code);
}